using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using BE;
using DA;

using Quadrem.ExceptionManagement;

namespace BL
{
    public class UsuarioBO
    {
        #region Metodos Publicos
        public static void InsertarUsuario(Usuario oUsuario)
        {
            try
            {
                UsuarioDA.InsertarUsuario(oUsuario);
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
        }
        public static void EliminarUsuario(Int32 uidUsuarioId)
        {
            try
            {
                UsuarioDA.EliminarUsuario(uidUsuarioId);
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
        }
        public static DataTable ObtenerUsuarios(String strNombres)
        {
            DataTable dtUsuarios = null;
            try
            {
                dtUsuarios = UsuarioDA.ObtenerUsuarios(strNombres);
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
            return dtUsuarios;
        }
        public static DataTable ObtenerUsuariosXPerfilId(long uidPerfilId)
        {
            DataTable dtUsuarios = null;
            try
            {
                dtUsuarios = UsuarioDA.ObtenerUsuariosXPerfilId(uidPerfilId);
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
            return dtUsuarios;
        }
        public static Usuario ValidarUsuario(String strLogin,String strPassword)
        {
            Usuario oUsuario = null;            
            try
            {
                DataSet dsUsuario = UsuarioDA.ValidarUsuario(strLogin, strPassword);
                if (dsUsuario.Tables.Count > 0 && dsUsuario.Tables[0].Rows.Count > 0)
                {
                    DataRow dr = dsUsuario.Tables[0].Rows[0];
                    oUsuario = new Usuario();
                    oUsuario.UsuarioId = Convert.ToInt32(dr["UsuarioId"].ToString());
                    oUsuario.Login = dr["Login"].ToString();
                    oUsuario.Nombres = dr["Nombres"].ToString();
                    oUsuario.Email = dr["Email"].ToString();
                    oUsuario.PerfilId = Convert.ToInt64(dr["PerfilId"].ToString());
                    oUsuario.PerfilNombre = dr["PerfilNombre"].ToString();
                    if (dr["Estado"].ToString() == "1")
                        oUsuario.Estado = true;
                    else
                        oUsuario.Estado = false;
                }
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
            return oUsuario;
        }
        public static void ActualizarPassword(String strLogin, String strPasswordNuevo, String strPasswordAntiguo)
        {
            try
            {
                UsuarioDA.ActualizarPassword(strLogin,strPasswordNuevo,strPasswordAntiguo);
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
        }
        public static DataTable RecuperarPassword(String strLogin)
        {
            DataTable dtData = null;
            try
            {
                dtData = UsuarioDA.RecuperarPassword(strLogin);                
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
            return dtData;
        }
        public static Usuario ObtenerDetalleUsuario(Int32 uidUsuarioId)
        {
            Usuario oUsuario = null;
            try
            {
                DataTable dt = UsuarioDA.ObtenerDetalleUsuario(uidUsuarioId);
                if (dt.Rows.Count > 0)
                {
                    DataRow dr = dt.Rows[0];
                    oUsuario = new Usuario();
                    oUsuario.UsuarioId = Convert.ToInt32(dr["UsuarioId"].ToString());
                    oUsuario.Nombres = dr["Nombres"].ToString();
                    oUsuario.Login = dr["Login"].ToString();
                    oUsuario.Email = dr["Email"].ToString();
                    oUsuario.PerfilId = Convert.ToInt64 (dr["PerfilId"].ToString());
                    if (dr["Estado"].ToString() == "1")
                        oUsuario.Estado = true;
                    else
                        oUsuario.Estado = false;
                }
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
            return oUsuario;
        }
        public static DataTable ObtenerUsuariosRDC(Int32 Cod_RDC)
        {
            DataTable dtUsuarios = null;
            try
            {
                dtUsuarios = UsuarioDA.ObtenerUsuariosRDC(Cod_RDC);
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
            return dtUsuarios;
        }
        public static DataTable ObtenerUsuariosQA(Int32 uidUsuarioId)
        {
            DataTable dtUsuarios = null;
            try
            {
                dtUsuarios = UsuarioDA.ObtenerUsuariosQA(uidUsuarioId);
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
            return dtUsuarios;
        }
        public static DataTable ObtenerUsuarios(BEUsuario oBE)
        {
            DataTable dtUsuarios = null;
            try
            {
                dtUsuarios = UsuarioDA.ObtenerUsuarios(oBE);
            }
            catch (Exception ex)
            {
                BusinessLogicBase.Publish(ex);
            }
            return dtUsuarios;
        }
        #endregion
    }
}
